home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 351-375 / disk_365 / view80 / src / fasttext.a next >
Text File  |  1992-05-06  |  1KB  |  77 lines

  1. *   Routine di stampa veloce di View80
  2.  
  3. *   a0=puntatore a struct line
  4. *   a1=puntatore a destinazione
  5.  
  6.  
  7.     CSECT    text
  8.  
  9.     xdef    _fasttext
  10.  
  11.     xref    _CharData
  12.     xref    _tab
  13.  
  14.  
  15. * Inizio routine
  16. _fasttext:
  17.  
  18.     movem.l    d2/d3/a2/a3/a5/a6,-(a7)
  19.  
  20.     moveq    #0,d1        ;d1 e` usato solo per bytes
  21.     movea.l    a1,a6        ;a6=inizio destinazione
  22.  
  23.     move.b    4(a0),d0
  24.     addq.b    #1,d0        ;d0=len+1
  25.     movea.l    (a0),a0        ;a0=add
  26.     lea        _CharData(a4),a5
  27.  
  28. * Main Loop
  29. mainloop:
  30.     subq.b    #1,d0
  31.     beq.b    fine
  32.     move.b    (a0)+,d1
  33.     cmpi.b    #9,d1
  34.     beq.b    tab
  35. normal:
  36.     lea        0(a5,d1.w),a3    ;a3=sorc
  37.     movea.l    a1,a2        ;a2=dest
  38.     addq    #1,a1
  39.     moveq.l    #7,d2
  40. writeloop:
  41.     move.b    (a3),(a2)
  42.     adda.w    #256,a3
  43.     adda.w    #80,a2
  44.     dbf        d2,writeloop
  45.     bra.b    mainloop
  46.  
  47. * Gestione tab
  48. tab:
  49.     move.b    _tab(a4),d2
  50.     beq.b    normal
  51.     move.l    a6,d3
  52.     sub.l    a1,d3
  53.     neg.l    d3
  54.     and.b    #%111,d3
  55.     cmpi.b    #8,d2
  56.     beq.b    tab2
  57.     and.b    #%11,d3
  58.     cmpi.b    #4,d2
  59.     beq.b    tab2
  60.     and.b    #%1,d3
  61.     cmpi.b    #2,d2
  62.     beq.b    tab2
  63.     moveq    #0,d3
  64. tab2:
  65.     sub.b    d3,d2
  66.     ext.w    d2
  67.     adda.w    d2,a1
  68.     bra.b    mainloop
  69.  
  70. * Fine
  71. fine:
  72.     movem.l    (a7)+,d2/d3/a2/a3/a5/a6
  73.     rts
  74.  
  75.  
  76.     end
  77.